package org.ala.tiktools.client_server.bean;

import java.lang.reflect.Method;
import java.util.Map;

import org.ala.tiktools.logs.LoggerFactory;
import org.ala.tiktools.rpc.plugin.interceptor.IRpcInterceptor;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;

/**
 *
 *	@author ala
 *	@date 2025年5月2日
 */
@Component
public class SenderInterceptor implements IRpcInterceptor {
	static Logger log = LoggerFactory.getLogger("rpc", "sender");
	
	@Override
	public void doIntercept(Method method, Object[] args, Map<String, Object> metadata) throws Exception {
		log.info("发送端前置拦截，发生在远程请求之前 metadata里放一个{aaaa:1}");
		metadata.put("aaaa", 1);
	}
	/**
	 * 	@param	res	远程请求返回结果（就是method要的返回结果，异步模式也一样）
	 */
	@Override
	public void afterIntercept(Method method, Object[] args, Object res, Map<String, Object> metadata) throws Exception {
		log.info("发送端后置拦截，发生在远程请求成功之后 metadata:{}", metadata);
	}
	@Override
	public int sort() {
		//	拦截器在chain中执行顺序，越小越靠前
		return 0;
	}
}
